const jsonwebtoken = require('jsonwebtoken')
const { secret } = require('../config')
const db = [
  {
    "id": 0,
    "name": "devin",
    "password": '123321'
  }
]

class UserControl {

  async login(ctx) {
    ctx.verifyParams({
      name: { type: "string",require: true },
      password: { type: 'string',require: true }
    })
    // 注意箭头函数的 {} return
    const user = db.some((val) =>  {return val.name === ctx.request.body.name && val.password === ctx.request.body.password})
    console.log(user, 'user---user')
    if (!user) ctx.throw(401, '用户名或者密码不对')
    const { id, name, password } = ctx.request.body
    // 从数据库中查找出名字，然后生成token;
    const token = jsonwebtoken.sign({ id, name, password }, secret)
    ctx.body = { token };
  }

  async find (ctx) {
    ctx.set('Allow', 'GET,POST')
    ctx.body = db;
  }

  async findId (ctx) {
    ctx.body = db[ctx.params.id * 1] 
  }

  async add(ctx) {
    db.push(ctx.request.body)
    ctx.body = ctx.request.body;
    // ctx.throw(401, '用户未授权，赶紧登陆吧')
  }

  async updateById(ctx) {
    console.log(ctx.params.id, 'ctx')
    db[ctx.params.id*1] = ctx.request.body;
    ctx.body = ctx.request.body
  }

  async deleteById(ctx) {
    db.splice(ctx.params.id, 1)
    ctx.status = 204;
    ctx.body = ctx.params.id
  }

  // 权限
  async checkOwner(ctx, next) {
    // console.log(ctx.state, '-----', 'ctx----ctx')
    console.log(ctx.params.id, '---', ctx.state.user.id)
    if(ctx.params.id * 1 !== ctx.state.user.id) {
      ctx.throw(403, '没有权限')
    }
    await next()
  }
}

module.exports = new UserControl()